package top.as.sean.dao.vo.system;

import lombok.Data;
import lombok.EqualsAndHashCode;
import annotation.DictField;
import top.as.sean.common.tree.TreeNode;
import top.as.sean.dao.plugin.DictPlugin;

import java.time.LocalDateTime;

/**
 * 菜单树形结构
 *
 * @author: ArchieSean
 * @create: 2023/1/2
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class MenuTree extends TreeNode {
    /**
     * 菜单名称
     */
    private String menuName;
    /**
     * 排序
     */
    private Integer orderNum;
    /**
     * 路由地址
     */
    private String path;

    /**
     * 重定向地址
     */
    private String redirect;

    /**
     * 组件名称
     */
    private String component;
    /**
     * 菜单类型：0：菜单，1：方法，2：按钮
     */
    private String menuType;

    /**
     * 菜单类型（翻译后的数据）
     */
    @DictField(key = "menu_type", clazz = DictPlugin.class, method = "getDataDict")
    private String menuTypeDict;
    /**
     * 菜单状态，0：显示，1：隐藏
     */
    private String visible;
    /**
     * 菜单隐藏：翻译后的数据
     */
    @DictField(key = "menu_visible", clazz = DictPlugin.class, method = "getDataDict")
    private String visibleDict;
    /**
     * 状态，0：正常，1：停用
     */
    private String status;

    /**
     * 翻译后的状态
     */
    @DictField(key = "menu_status", clazz = DictPlugin.class, method = "getDataDict")
    private String statusDict;
    /**
     * 权限标识
     */
    private String permCode;

    /**
     * 请求方式
     */
    private String method;
    /**
     * 请求方式翻译
     */
    @DictField(key = "menu_method", clazz = DictPlugin.class, method = "getDataDict")
    private String methodDict;
    /**
     * 菜单图标
     */
    private String icon;
    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;
}
